package ar.uba.fi.algo3.tp1.modelo.funciones.operadores;

import ar.uba.fi.algo3.tp1.modelo.excepciones.*;

public class OperadorPotencia implements Operador {
	
	/**
	 * Pre: 
	 * Post: 
	 * 
	 */
	public double ejecutar(double base, double exponente) throws eRaizNegativa{
		double resultado;
		if ((base < 0) && (exponente <1) && (0 == (1/exponente)%2)) throw new eRaizNegativa();
		if ((base < 0) && (exponente <1) && (1 == (Math.round(1/exponente))%2)) {
			double x=Math.abs(base);
			double n=Math.round(1/exponente);
			resultado=Math.exp(Math.log(x)/n)*(-1);
		} else resultado = Math.pow(base,exponente);
		
		return resultado;
	}
	
	public String toString(){
		return "^";
	}
}
